﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CapaNegocios;
using Excepciones;

namespace CapaUsuario
{
  
    public partial class FNuevoPresup : FPlantilla
    {
        private CentroReparacion cRep;

        public FNuevoPresup()
        {
            InitializeComponent();
        }

        public FNuevoPresup(CentroReparacion cR)
        {
            cRep = cR;
            InitializeComponent();
        }

        private void checkGtia_CheckedChanged(object sender, EventArgs e)
        {
            gbGtia.Enabled = !gbGtia.Enabled;
        }


        private void btnOk_Click(object sender, EventArgs e)
        {
            try
            {
                string descE = tbDescElec.Text.Trim();
                string codE = tbIdElect.Text.Trim();
                if ((descE.Length == 0) || (codE.Length == 0)) throw new BlankException();
                Electrodom elect = new Electrodom(int.Parse(codE),descE);

                //agregamos el electrodomestico a la lista
                cRep.agregarElectrodomestico(elect);

                DateTime fFin = verificarFormatoFecha(tbFechaFin.Text.Trim());
                if (fFin == null) throw new FormatDateException();

                // Si tiene Garantia
                if (checkGtia.Checked)
                {
                    DateTime fCom = verificarFormatoFecha(tbFechaCompra.Text.Trim());
                    if (fCom == null) throw new FormatDateException();
                    string negocio = tbLugarCompra.Text.Trim();
                    if (negocio.Length == 0) throw new BlankException();
                    PresupConGtia pConG = new PresupConGtia(int.Parse(tbIdPresup.Text), elect, fCom, fFin, negocio);
                    cRep.agregarPresupuesto(pConG);
                    MessageBox.Show("Presupuesto CON GARANTIA agregado correctamente");
                }
                // Sin Garantia
                else
                {
                    PresupSinGtia pSinG = new PresupSinGtia(int.Parse(tbIdPresup.Text), elect, fFin);
                    //agregamos el presupuesto a la lista
                    cRep.agregarPresupuesto(pSinG);
                    MessageBox.Show("Presupuesto SIN GARANTIA agregado correctamente");
                }
                RefreshForm();
            }
            catch (FormatDateException fe)
            {
                MessageBox.Show(fe.Message);
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


        public DateTime verificarFormatoFecha(string s)
        {
            try
            {
                string[] vectorFecha = new string[3];
                char delimitador = '/';
                vectorFecha = s.Split(delimitador);
                DateTime fecha = new DateTime(int.Parse(vectorFecha[2]), int.Parse(vectorFecha[1]), int.Parse(vectorFecha[0]));
                return fecha;
            }
            catch (Exception )
            {
                return new DateTime(0,0,0);
            }

        }


        private void RefreshForm()
        {
            // Limpiamos los textBoxes
            tbDescElec.Clear();
            tbFechaCompra.Clear();
            tbFechaFin.Clear();
            tbIdElect.Clear();
            tbLugarCompra.Clear();
            // El numero de presupuesto
            tbIdPresup.Text = cRep.getNuevoIdPresup().ToString();
            // El foco en el primero
            tbIdElect.Focus();
        }

        private void FNuevoPresup_Load(object sender, EventArgs e)
        {
            tbIdPresup.Text = cRep.getNuevoIdPresup().ToString();
        }


        private void lblIdPresup_Click(object sender, EventArgs e)
        {

        }

        private void tbIdPresup_TextChanged(object sender, EventArgs e)
        {

        }

        private void tbIdElect_TextChanged(object sender, EventArgs e)
        {

        }

        private void tbDescElec_TextChanged(object sender, EventArgs e)
        {

        }

        private void tbFechaFin_TextChanged(object sender, EventArgs e)
        {

        }

    }
}
